perm filename MC.SAI[1,DEK] blob
sn#347077 filedate 1978-04-13 generic text, type T, neo UTF8
00100 begin comment testing new version of pollard factorization;
00150 external procedure bail;
00200 integer array pr[1:79000];
00250 integer t;
00300 integer procedure m(integer p);
00400 begin integer x,y,k,l;
00450 integer a,b,c;
00500 k←1;l←1;x←2;y←5 mod p;
00600 while x neq y do
00700 begin k←k-1; if k=0 then
00800 begin x←y;l←l+l;k←l;
00900 end;
01000 a←y lsh -10; b←y land '1777;
01100 y←(a↑2) mod p;
01200 y←((y lsh 10)+2*a*b) mod p;
01300 y←((y lsh 10)+b↑2+1) mod p;
01400 end;
01600 return(l+l-k);
01700 end;
01740 setformat(7,7);
01750 bail;
01800 pr[1]←3; t←1;
01900 while pr[t]<1000000 do
02000 begin integer i,n,q; n←pr[t];
02100 while true do
02200 begin n←n+2; i←1;
02300 while true do begin q←n div pr[i]; if n=q*pr[i] then done;
02400 if q<pr[i] then done; i←i+1; end;
02500 if n neq q*pr[i] then done;
02600 end;
02700 t←t+1; pr[t]←n;
02800 if t mod 1000 = 0 then print(n);
02900 end;
03000 begin integer i,j; real maxr,r;
03050 integer jj,maxm,mm;
03100 maxr←0.0;
03150 mm←0;
03200 for i←1 step 1 until t-1 do
03300 begin mm←m(pr[i]); r←mm/sqrt(pr[i]);
03350 if mm>maxm then begin jj←i; maxm←mm end;
03400 if r>maxr then begin j←i; maxr←r end;
03500 if i mod 1000 = 0 then print('15&'12,pr[i],r,j,maxr);
03600 end;
03700 print('15&'12,"Worst case ",pr[j],m(pr[j]),maxr,pr[jj],maxm);
03750 end;
03800 end